Methods And Apparatus For Providing Independent Logical Address Space And Access Management

ABSTRACT

A memory access control apparatus executes memory access after the apparatus has determined whether access to memory is granted or not. A command receiver receives, from an external memory access requesting entity, a command with which to access data in memory, together with an address to be accessed and IOID to identify the memory access requesting entity. Based on the IOID, an access decision unit determines whether or not an access is one from a memory access requesting entity to which an access to a region designated as an access destination is to be permitted. The access decision unit determines whether access of the memory access requesting entity is permitted or not, for each page that serves as a basic access unit in memory.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to technologies by which to control the memory access, and it particularly relates to a technology by which to control the access requests from external devices.

2. Description of the Related Art

Along with recent years' significant advance of the computer graphics technology and image processing techniques, which are utilized in the fields of computer games, digital broadcasting and the like, there is demand that the information processing apparatus such as computers, gaming machines and televisions be equipped with faster processing capacity to process high-definition image data. To meet such demand, it goes without saying that the arithmetic processing itself needs to be done at high speed. By the same token, it is important to suitably distribute the tasks among a plurality of processing units.

Each processing unit accesses memory as appropriate when tasks are to be executed. In so doing, if the access by a processing unit B to a memory area secured for the processing of a processing unit A is granted, the performance stability will be impaired. Particularly in the case of an I/O device for controlling the peripheral equipment, there are many cases where a device driver directly designates a physical address so as to control the memory. The programming errors in such a device driver may possibly impose a serious effect on the performance stability of an information processing apparatus.

SUMMARY OF THE INVENTION

The present invention has been made in view of such problems to be solved, and a main object thereof is to provide a technology by which to optimally control the memory access by a plurality of processing units.

Item 1:

A memory access control apparatus, comprising:

a command receiver which receives, from an external memory access requesting entity, a command for controlling data in memory, together with address information used to specify an address to be accessed and ID information used to identify the memory access requesting entity;

an access decision unit which determines whether access of the memory access requesting entity to an address specified by the address information is permitted or not, by referring to an access permission/denial determination table that associates an address in the memory with ID information on a memory access requesting entity which is to be permitted to access a region specified by the address.

Item 2:

A memory access control apparatus according to Item 1, wherein the access decision unit determines the permission/denial of access of the memory access requesting entity, for each page which is a basic access unit.

Item 3:

A memory access control apparatus according to Item 1 or Item 2, further comprising:

an address translation table storage which stores an address translation table to translate a logical address into a physical address, wherein the address information is information indicative of the logical address which is a virtual address converted from an address of the memory into a predetermined format; and

an address translation unit which translates the logical address specified in the address information into a physical address by referring to the address translation table,

wherein the access decision unit determines the permission/denial of access by the memory access requesting entity to the physical address identified by the address translation unit, by referring to the access permission/denial determination table.

Item 4:

A memory access control apparatus according to Item 3, herein the address translation table includes, as part thereof, table data corresponding to the access permission/denial determination table and is formed as a data table that associates the logical address and physical address with ID information on an access requesting entity which is to be permitted to access a region specified by the address.

Item 5:

A memory access control apparatus according to Item 3 or Item 4, further comprising a cache processing unit which loads beforehand a partial translation table which is a part corresponding to a predetermined logical address range in the address translation table, into a cache memory from the address translation table storage, prior to address translation by the address translation unit,

wherein when data necessary for converting a logical address specified by the address information into a physical address is contained in the loaded partial translation table, the address translation unit performs address translation by referring to the partial translation table, and

wherein when the data necessary for converting a logical address specified by the address information into a physical address is not contained in the loaded partial translation table, the cache processing unit loads a new partial translation table into the cache memory from the address translation table storage.

Item 6:

A memory access control apparatus according to Item 5, wherein when the data necessary for converting a logical address specified by the address information into a physical address is not contained in the partial translation table loaded beforehand prior to execution of the address translation, the cache processing unit loads a new partial translation table into the cache memory in a state where the partial translation table is being held in the cache memory.

Item 7:

A memory access control apparatus according to Item 1 or Item 2, further comprising:

an access attribute table storage which stores an access attribute table that associates an address in the memory with access attribute information defining an access condition for a region specified by said address; and

an access control unit which executes an access specified by the received command in accordance with the access condition specified by the access attribute table, on the condition that access of the memory access requesting entity is permitted by the access decision unit.

Item 8:

A memory access control apparatus according to Item 3, wherein the address translation table storage stores an index value generated by performing a logic operation of a predetermined base value on a predetermined part of data of the logical address specified in the address information, and the address translation table as a data table associating a physical address with the index value, and

wherein the address translation unit calculates the index value from the logical address specified by the received address information, and identifies a physical address by referring to the address translation table according to the index value thereof.

Item 9:

A command transmit auxiliary apparatus, comprising:

an ID adding unit which assigns ID information to identify a memory access requesting entity, to a command for controlling data in memory sent from the predetermined memory access requesting entity together with address information used to specify an address of the memory to be accessed; and

a command transmitter which transmits the command to which the ID information has been assigned, to an external device that determines whether access of the memory access requesting entity to the address specified by the address information is to be permitted or not, by referring to an access permission/denial determination table that associates an access in the memory and ID information on a memory access requesting entity in which access is to be permitted to a region specified by said address.

Item 10:

A command transmit auxiliary apparatus according to Item 9, wherein the ID information is assigned, for each memory access requesting entity, by software that controls the memory access requesting entity and the external device in a unified manner.

Item 11:

A method for controlling memory access, comprising:

receiving, from an external memory access requesting entity, a command for controlling data in memory, together with address information used to specify an address to be accessed and ID information used to identify the memory access requesting entity; and

determining whether access of the memory access requesting entity to an address specified by the address information is permitted or not, by referring to an access permission/denial determination table that associates an address in the memory with ID information on a memory access requesting entity which is to be permitted to access a region specified by the address.

Item 12:

A method according to Item 11, wherein the determining is such that whether access of the memory access requesting entity is permitted or not is determined per page which is a unit of basic access in the memory.

Item 13:

A method according to Item 11 or Item 12, further comprising translating a logical address specified by the address information into a physical address by referring to an address translation table to translate the logical address into the physical address wherein the address information is information indicative of the logical address which is a virtual address converted from an address of the memory into a predetermined format;

-   -   wherein the permission/denial of access of the memory access         requesting entity to the physical address is determined by         referring to the address translation table.

Item 14:

A method according to Item 13, further comprising loading beforehand a partial translation table which is a part corresponding to a predetermined logical address range in the address translation table, into a cache memory, prior to the execution of address translation,

-   -   wherein when data necessary for converting a logical address         specified by the address information into a physical address is         contained in the loaded partial translation table, the address         translation is performed by referring to the partial translation         table, and     -   wherein when the data necessary for converting a logical address         specified by the address information into a physical address is         not contained in the loaded partial translation table, a new         partial translation table is loaded into the cache memory.

Item 15:

A method for controlling memory access according to Item 14, wherein when the data necessary for converting a logical address specified by the address information into a physical address is not contained in the partial translation table loaded beforehand prior to execution of the address translation, a new partial translation table is loaded into the cache memory in a state where the partial translation table is being held in the cache memory.

Item 16:

A method for controlling memory access according to Item 11 or Item 12, further comprising executing an access specified by a received command, according to an appropriate access condition, by referring to an access attribute table that associates an address in the memory with access attribute information defining the access condition for a region specified by said address.

Item 17:

A method for controlling memory access according to Item 13, wherein the address translation table is a data table that associates an index value generated by performing a logic operation of a predetermined base value on a predetermined part of data of the logical address specified in the address information, with a physical address, and

wherein the index value is calculated from the logical address specified by the received address information, and a physical address is identified by referring to the address translation table according to the index value thereof.

Item 18:

A command transmit auxiliary method, comprising:

assigning ID information to identify a predetermined memory access requesting entity, to a command for controlling data sent from a predetermined memory access requesting entity together with address information used to specify an address to be accessed; and

transmitting the command to which the ID information has been assigned, to an external device, wherein the external device determines whether access of the memory access requesting entity to the address specified by the address information is to be permitted or not, by referring to an access permission/denial determination table that associates an access in the memory and ID information on a memory access requesting entity whose access to a region specified by said address of the memory space is permitted.

Item 19:

A memory access control program, executable by a computer, the program including the functions of:

receiving, from an external memory access requesting entity, a command for controlling data in memory, together with address information used to specify an address to be accessed and ID information used to identify the memory access requesting entity; and

determining whether access of the memory access requesting entity to an address specified by the address information is permitted or not, by referring to an access permission/denial determination table that associates an address in the memory with ID information on a memory access requesting entity which is to be permitted to access a region specified by the address.

Item 20:

A computer-executable program, executed by a computer, for assisting the transmission of commands, the program including the functions of:

assigning ID information to identify a memory access requesting entity, to a command for controlling data in memory sent from the predetermined memory access requesting entity together with address information used to specify an address of the memory to be accessed; and

transmitting the command to which the ID information has been assigned, to an external device that determines whether access of the memory access requesting entity to the address specified by the address information is to be permitted or not, by referring to an access permission/denial determination table that associates an access in the memory and ID information on a memory access requesting entity in which access is to be permitted to a region specified by said address.

Item 21:

A recording medium which stores a memory access controlling program executable by a computer, the program including the functions of:

receiving, from an external memory access requesting entity, a command for controlling data in memory, together with address information used to specify an address to be accessed and ID information used to identify the memory access requesting entity; and

determining whether access of the memory access requesting entity to an address specified by the address information is permitted or not, by referring to an access permission/denial determination table that associates an address in the memory with ID information on a memory access requesting entity which is to be permitted to access a region specified by the address.

Item 22:

A recording medium which stores a command transmit assisting program executable by a computer, the program including the functions of:

assigning ID information to identify a memory access requesting entity, to a command for controlling data in memory sent from the predetermined memory access requesting entity together with address information used to specify an address of the memory to be accessed; and

transmitting the command to which the ID information has been assigned, to an external device that determines whether access of the memory access requesting entity to the address specified by the address information is to be permitted or not, by referring to an access permission/denial determination table that associates an access in the memory and ID information on a memory access requesting entity in which access is to be permitted to a region specified by said address.

One embodiment of the present invention relates to a memory access control apparatus. This apparatus comprises: a command receiver which receives, from an external memory access requesting entity, a command for controlling data in memory, together with address information used to specify an address to be accessed and ID information used to identify the memory access requesting entity; an access decision unit which determines whether access of the memory access requesting entity to an address specified by the address information is permitted or not, by referring to an access permission/denial determination table that associates an address in the memory with ID information on a memory access requesting entity which is to be permitted to access a region specified by the address.

According to such an embodiment as this, it can be determined whether or not the access is a valid access of memory access requesting entity permitted to access a memory region to which the access request has been made, based on the ID information. The “ID information” may be generated exclusively as a bit sequence defined by a predetermined format, for example. It serves the purpose as long as it is the information with which a memory access requesting entity can be uniquely identified.

The address information may be information indicative of a logical address which is a virtual address obtained after a memory address has been converted in a predetermined format.

In such a case, this apparatus may further comprise: an address translation table storage which stores an address translation table for translating a logical address into a physical address; and an address translation unit which translates the logical address specified by the address information into a physical address by referring to the address translation table.

Then, the access decision unit may determine whether or not the access by the memory access requesting entity is permitted to the specified physical, by referring to the access permission/denial determination table.

In this embodiment, the physical addresses are not directly designated from the memory access entities, so that the memory protection is further facilitated.

This apparatus may load a partial translation table which is a part corresponding to a predetermined logical address range in the address translation table, into a cache memory from the address translation table storage, prior to address translation by the address translation unit.

When data necessary for translating a logical address specified by the address information into a physical address is contained in the loaded partial translation table, the address may be converted by referring to the partial translation table; and when not contained, a new partial translation table may be loaded into the cache memory from the address translation table storage.

When the necessary data is not contained in the partial translation table loaded beforehand prior to execution of the address translation, a new partial translation table may be loaded into the cache memory in a state where the partial translation table is being held in the cache memory.

This apparatus may further comprise an access attribute table storage which stores an access attribute table that associates an address in the memory with access attribute information defining an access condition for a region specified by said address; and an access control unit which executes an access specified by the received command in accordance with the access condition specified by the access attribute table, on the condition that access of the memory access requesting entity is permitted by the access decision unit.

permitted by the access decision unit.

Another embodiment of the present invention relates to a command transmit auxiliary apparatus.

This apparatus comprises: an ID adding unit which assigns ID information to identify a memory access requesting entity, to a command for controlling data in memory sent from the predetermined memory access requesting entity together with address information used to specify an address of the memory to be accessed; and a command transmitter which transmits the command to which the ID information has been assigned, to an external device that determines whether access of the memory access requesting entity to the address specified by the address information is to be permitted or not, by referring to an access permission/denial determination table that associates an access in the memory and ID information on a memory access requesting entity in which access is to be permitted to a region specified by said address.

The ID information may be software that controls the memory access requesting entities and the external devices in a unified manner, and may be allotted for each memory access requesting entity.

According to the memory access control apparatus and the command transmit control apparatus described as above, it is advantageous in that the access to data in memory can be optimally controlled.

It is to be noted that those expressing the present invention in the form of a method, an apparatus, a system, a recording medium, and a computer program are also effective as the embodiments of the present invention.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments will now be described by way of examples only, with reference to the accompanying drawings which are meant to be exemplary, not limiting and wherein like elements are numbered alike in several Figures in which:

FIG. 1 is a function block diagram of an information processing apparatus;

FIG. 2 illustrates a data structure of packet data;

FIG. 3 is a schematic diagram to explain a process in which a logical address indicated by packet data is translated into a physical address;

FIG. 4 is a schematic diagram to explain a relationship between a physical address space and access permission/denial;

FIG. 5 is a function block diagram of a command transmit auxiliary apparatus;

FIG. 6 is a function block of a memory access control apparatus;

FIG. 7 is a flowchart showing a memory access control process by the memory access control apparatus; and

FIG. 8 is a flowchart showing in a detail an address translation processing in S12 of FIG. 7.

DETAILED DESCRIPTION OF THE INVENTION

The invention will now be described by reference to the preferred embodiments. This does not intend to limit the scope of the present invention, but to exemplify the invention.

FIG. 1 is a function block diagram of an information processing apparatus.

An information processing apparatus 100 includes an overall control unit 110, an image processing unit 120 and a main memory 140. The information processing apparatus 100 is connected to a display apparatus 150. The display apparatus 150 outputs the image or video that has been obtained as a result of processing by the overall control unit 110 and the image processing unit 120. The information processing apparatus 100 is also connected via a bus 118 to a variety of I/O devices 160 for controlling external devices. The I/O device 160 to be connected to the information processing apparatus 100 may be in plural numbers or of plural types. The overall control unit 110 and the image processing unit 120 are each formed as a single-chip electronic device and are physically separated from each other. The information processing apparatus 100 may also be formed as an electronic device that further contains these electronic devices.

In terms of hardware, each element described, as a function block for carrying out a variety of processings, as shown in FIG. 1 and the like, can be realized by a CPU (Central Processing Unit), a memory and other LSI (Large Scale Integration). In terms of software, it is realized by memory-loaded programs or the like that have a function of reserved management. Thus, it is understood by those skilled in the art that these function blocks can be realized in a variety of forms such as by hardware only, software only or the combination thereof and are not limited to any of these in particular.

Executed in the information processing apparatus 100 is an operating system (hereinafter referred to simply as “OS (Operation System)”) that provides functions and environment for efficient use of the information processing apparatus 100 and controls the whole apparatus in a unified manner. A plurality of application software is executed on an OS.

The overall control unit 110 includes a single main control unit 112, a plurality of sub-control units 116 and a memory access control unit 300. The sub-control units 116, the main control unit 112 and the memory access control unit 300 can communicate with one another via the bus 118.

The main control unit 112 assigns tasks as the basic processing units of each application, to the respective sub-control units 116. Or the main control unit 112 may execute the tasks by itself. With the sub-control units 116 executing their respectively assigned tasks, a plurality of tasks are processed in parallel with one another.

Hereinbelow, the processings executed by the main control unit 112, including the task assignment processing, are called the “main process”, and the processings executed by the sub-control units 116 the “sub-process”. The main control unit 112 executes processings for overall control of the information processing apparatus 100, such as a user-interface-related processing which has a relatively high priority. In contrast to this, the sub-control units 116 executes processings subcontracted from the main process, such as calculations executed in the background which has a relatively low priority.

A DMAC (Direct Memory Access Controller), not shown, included in the main control unit 112 or the sub-control units 116 controls data transfer, data save and the like with a built-in graphics memory 128 in the main memory 140 or the image processing unit 120 by a command from the main control unit 112 or the sub-control unit 116. The main memory unit 112 and the sub-control unit 116 have a local memory incorporated therein.

The memory access control unit 300 controls memory access requests, from the image processing unit 120 which is an external device to the overall control unit 110 or from the I/O device 160, in a unified manner. When accessing various memories incorporated into the main memory 140 or the overall control unit 110, the image processing unit 120 or the I/O device 160 transmits the commands requesting the memory access, to the memory access control unit 300. The memory access control unit 300 controls the read, write and the like in accordance with these commands and the detail thereof will be discussed later in conjunction with FIG. 2 and the subsequent figures, especially FIG. 6.

The main memory 140 is a storage area used mainly by the overall control unit 110 and the image processing unit 120. In the main memory 140, data related to the execution status of a task are stored. For example, coordinate data obtained as a result of coordinate calculation concerning computer graphics executed by the overall control unit 110 are stored temporarily. There are also cases where data generated by the image processing unit 120 are saved in this main memory 140.

The image processing unit 120 is a unit that exclusively executes image processing, for instance, rendering processing. The image processing unit 120 executes image processing, following the instructions from the overall control unit 110. The image processing unit 120 carries out image processing related to the respective tasks processed by the overall control unit 110 and outputs the generated images or videos to the display apparatus 150. The image processing unit 120 may time-share and execute a plurality of image processings parallelly.

The image processing unit 120 includes a graphics memory 128, an arithmetic unit 130, a display controller 126, a control block 124, an image-processing-side DMAC 122 and a command transmit auxiliary apparatus 200. These units are connected with one another via the bus 118 and thus the units can communicate with one another.

The graphics memory 128 is a memory area for storing graphics data that are used and managed by the image processing unit 120. Provided in the graphics memory 128 are not only a frame buffer and a Z-buffer, where image frame data are stored, but also areas corresponding to data, such as vertex data, texture data and color lookup table, which are the basic data referred to at the rendering of image frame data.

The control block 124 is a block for controlling the image processing unit 120 as a whole. The control block 124 performs an overall control of the arithmetic unit 130, the graphics memory 128 and the display controller 126 and carries out synchronization management, timer management and the like of data transfer between the respective blocks.

The image-processing-side DMAC 122 controls the data transfer, data save and the like between the overall control unit 110 or the main memory 140 and the graphics memory 128, following a command from the control block 124.

The display controller 126 generates horizontal and vertical synchronization signals and loads, sequentially in a line, the pixel data of image frame data from a frame buffer stored in the graphics memory 128 according to the display timing of the display apparatus 150. Furthermore, the display controller 126 makes an output by converting the pixel data having been loaded in a line, from the digital data comprised of RGB (Red-Green-Blue) color values, into a format corresponding to the display apparatus 150.

The arithmetic unit 130 carries out a variety of arithmetic processings concerning graphics, following the commands from the control block 124. One example of such processing may be a series of rendering processings of generating image frame data through coordinate transformation, hidden-surface elimination and shading based on three-dimensional modeling data and writing them into a frame buffer.

The arithmetic unit 130 includes such function blocks as a rasterizer 132, a shader unit 134 and a texture unit 136 in order to effect a high-speed processing of three-dimensional graphics in particular.

The rasterizer 132 receives vertex data of a basic object to be rendered (hereinafter referred to as “primitive”) from the overall control unit 110 and performs a view transformation of converting the primitive on a three-dimensional space into graphics on a rendering plane through a projection transformation. Furthermore, it carries out a raster processing of scanning the graphics on the rendering plane along the horizontal direction of the rendering plane and converting them column by column into quantized pixels. The primitive is pixel-expanded by the rasterizer 132, and the pixel information is calculated for each pixel. The pixel information includes RGB color values, a values indicating transparency, and Z values indicating depth from viewpoints.

The rasterizer 132 generates a pixel area of a predetermined size along the scan lines and outputs it to the shader unit 134 and the texture unit 136. The pixel areas outputted from the rasterizer 132 are once stacked into a queue, and the shader unit 134 processes the stacked pixel areas one by one.

The shader unit 134 carries out a shading processing based on the pixel information calculated by the rasterizer 132, determines the pixel colors after a texture mapping based on the texel information obtained by the texture unit 136, and writes the image frame data after the shading processing in a frame buffer in the graphics memory 128. Furthermore, the shader unit 134 performs processings, such as fogging and alpha blending, on the image frame data written into the frame buffer, determines final rendering colors, and updates the image frame data in the frame buffer.

The texture unit 136 receives parameters specifying texture data from the shader unit 134, reads out the requested texture data from a texture buffer in the graphics memory 128, and outputs them to the shader unit 134 after performing a predetermined processing thereon.

Upon receipt of basic information necessary for image generation, such as the vertex data of a primitive, or a start instruction for image generation from the overall control unit 110, the image processing unit 120 executes image processing independently of the overall control unit 110. The data generated by the image processing unit 120 are transferred to the graphics memory 128 and the main memory 140.

The command transmit auxiliary apparatus 200 included in the image processing unit 120 transmits a command requiring a memory access, to the memory control unit 300 in the overall control unit 110 from the image processing unit 120. Then the command transmit auxiliary apparatus 200 transmits commands, memory addresses to be accessed and ID information to identify its own apparatus after turning them into packets. The memory access control unit 300 controls the memory access according to the commands.

The command transmit auxiliary apparatus 200 is installed not only in the image processing unit 120 but also in the I/O device 160. The command transmit auxiliary apparatus 200 provided in the I/O device 160 also transmits commands to the overall control unit 110 from the I/O device 160.

The detail of the command transmit auxiliary apparatus 200 will described in conjunction with FIG. 2 and the subsequent Figures, especially FIG. 6.

FIG. 2 illustrates a data structure of packet data.

Packet data 162 as shown in FIG. 2 is a data structure of packet that contains a command sent out to the memory access control unit 300 from the command transmit auxiliary apparatus 200. An IOID region 172 represents an ID to uniquely identify an access requesting entity such as the image processing unit 120 or I/O device 160 that mounts the command transmit auxiliary apparatus therein (hereinafter, this ID will be referred to as “IOID (Input/Output device ID”). A command region 179 indicates command contents such as read or write. An address region 170 indicates a memory address of an access destination. This memory address is a logical address but not the address that directly specifies a physical address. This logical address is partitioned into segments and a segment is composed of a plurality of pages. The address in each page is designated by an offset. The address region 170 contains a segment region 174, a page region 176 and an offset region 178. The segment region 174 indicates a segment value that designates a segment, the page region 176 indicates a page value that designates a page, and the offset region 178 indicates an offset value within the page.

For example, the sizes of the segment region 174, the page region 176 and the offset region are about 7 bits, about 16 bits and about 12 bits, respectively.

FIG. 3 is a schematic diagram to explain a process in which a logical address indicated by packet data is translated into a physical address.

Firstly, a predetermined base value is added to the segment value of the segment region 174. The base value may be assigned by an OS or may be a fixed value. The base value added with this segment value is a first index value. A first translation table 180 is a data table in which the first index value is associated with a page base value. The page base value is specified by the first translation table 180.

In the first translation table 180, a first index column 184 indicates first index values. A page base value column 186 indicates page base values. A page value indicated in the page region 176 is added with a page base value specified by the first translation table 180. This value added together becomes a second index value.

A second translation table 182 is a data table which associates the second index value with the page number and the like. In the second translation table 182, a second index column 188 indicates second index values. A page number column 190 indicates page numbers. An IOID column 192 indicates the IOID the access of which is to be permitted for each page. An access condition column 194 indicates access attribute information in the page in question. The access attribute information will be discussed later.

The page number in the physical address space is identified by the second index value. The physical address is not only the main memory 140 alone but also all of memory address spaces, managed by the memory access control unit 300, which include various types of memories incorporated in the memory access control unit 300.

If the IOID value delivered by the IOID region 172 of the packet data 162 agrees with the IOID value of the IOID column 192 for the identified page, the access to said page is granted. An offset value indicated in the offset region 178 is added to the identified page and then a specific physical address is finally identified. Then the access is executed in accordance with the access attribute information indicated in the access condition column 194.

The access attribute information is information with which to condition an access method for memory, and there are numerous examples as follow.

1. Whether the Access Sequence is to be Forced or not

Normally, the access to the recording medium is not necessarily executed in the access-request sequence and, instead, the access is executed in order in which the memory controller can conveniently execute. The processing method like this is generally called an out-of-order execution. In the access condition column 194, information by which to specify whether or not access is to be made according to the access request sequence instead of the out-of-order execution is contained as the access attribute information. In a case of a page where the access sequence is set forcibly, the access is processed in a manner that the access is not executed prior to accesses to other pages.

2. Whether to Maintain Cache-Coherency is Necessary or not

Data of the so-called main storage such as a main memory 140 is accessed via a cache memory built in the overall control unit 110. This cache memory is a local memory which is mainly built into the main control unit 112, the sub-control unit 116 or the memory access control unit 300. Normally, the main control unit 112 and the like execute a processing using a cache memory capable of achieving a faster access than the main memory 140. The data written to the cache memory is reflected on the main memory. However, depending on the timing of such reflection, there are periods during which the data does not coincide between the cache memory and the main memory 140.

Information indicating whether the coherence (so-called cache coherency) between the data of cache memory and the data of the main memory 140, at the time when there is a memory access request, needs to be maintained or not is contained as the access attribute information.

In the case of a page where the cache coherence maintenance is set, which cache memory has the most updated data is detected by the cache snooping, for example; after this detection, its own state is changed so that the most updated data can be acquired whenever each cache memory requires. The cache coherence may also be maintained using other known methods such as the directory-based protocol and shared cache and shared.

3. Whether Write to Page is Permitted or not

Information indicating whether read only is permitted or read/write is permitted to this page is contained as the access attribute information.

FIG. 4 is a schematic diagram to explain a relationship between a physical space and access permission/denial.

Here, the description is based on the assumption that the IOID of the image processing unit 120 is “0021”. In a physical address space, an accessible region 196 is a region which can be accessed by the image processing unit 120 whose IOID is “0021”, whereas an inaccessible region 198 is a region where the access is prohibited. That is, in the second translation table 182, IOID “0021” is designated to pages included in the accessible region 196 in the IOID column 192 but it is not designated to pages included in the inaccessible region 198.

The access to a region to which the access of the image processing unit 120 is not permitted under normal circumstances can be prevented by whether or not the IOID “0021” is designated to the page identified by the second translation table 182. In this manner, by employing a simple check system called IOID, the physical address controlled by the overall control unit 110.

Even if the address designated by the packet data 162 is one such that a physical address is directly designated, the check system by the IOID will function effectively. In the present embodiment, the address designated by the packet data 162 serves as a logical address that does not directly designate a physical address. Thus, the unauthorized access is further likely to be prevented.

Even if it is the page contained in the accessible region 196, it goes without saying that the write processing is prohibited for an write-protected address region as access attribute information even if an access requesting entity has a valid IOID.

FIG. 5 is a function block diagram of a command transmit auxiliary apparatus.

The command transmit auxiliary apparatus 200 includes a command transmitter 202, an IOID adding unit 204 and a command acquisition unit 206.

The command acquisition unit 206 acquires commands from a unit or units in the image processing unit 120. In this command, a logical address indicative of an access destination, together with the contents of the command, are designated. The IOID adding unit adds IOID for identifying a memory access requesting entity, in the packet. In this manner, the command transmit unit 202 transmits to the memory access control unit 300 the packet data 162 containing at least the IOID, address and command.

FIG. 6 is a function block of the I/O access control apparatus 300.

The memory access control unit 300 includes a command receiver 302, an access decision unit 304, an address translation unit 306, a cache processing unit 308, a partial information storage 310 and an access processing unit 312.

The command receiver 302 receives packet data 162 transmitted from the command transmit auxiliary apparatus 200. The command receiver 302 calculates the first index value by performing logical addition of a base value for the segment region 174 of the packet data 162. In this case, the first index value corresponds to a true segment value. The cache processing unit 308 loads part of data of the first translation table 180 or second translation table 182 shown in FIG. 3 into the partial information storage 310.

The address information storage 314 may be constituted as part of the main memory 140. The partial information storage 310 may be constituted as a built-in cache capable of accessing faster than the address information storage 314. Hereinbelow, the first translation table 180 and/or the second translation table 182 stored in the address information storage 314 will be collectively referred to as “address translation table”. Part of the address translation table loaded into the partial information storage 310 will be referred to as “partial translation table” in distinction from the address translation table.

The operation of data transfer by the cache processing unit 308 between the partial information storage 310 and the address information storage 314 is called “refill” also.

The address translation unit 306 translates a logical address into a physical address by referring to the partial translation table stored in the partial information storage 310. The conversion method was explained with reference to FIG. 3. When data necessary for converting a logical address into a physical address is not contained in the partial translation table stored in the partial information storage 310, the cache processing unit 308 refills anew the partial translation table containing said part from the address information storage 314 to the partial information storage 310. The physical address identified by the address translation is conveyed to the access processing unit 312 and the access decision unit 304.

The access decision unit 304 determines whether the IOID matches for the page identified in the address translation unit 306 or not, namely, whether it is an accessible region or not. The decision result is conveyed to the access processing unit 312. On the condition that the access has been granted by the access decision unit 304, the access processing unit 312 executes memory access, by a command designated for a physical address conveyed from the address translation unit 306. At this time, the access decision unit 304 executes memory access according to the access attribute information designated for the page. The access destinations of the access processing unit 312 are storage media such as the main memory 140 or cache memory built into the overall control unit 110.

Note that the memory access control unit 300 may be so configured as to contain a portion corresponding to the address information storage 314.

The partial information storage 310 manages the data in units of block wherein this block, which is often called “line” also, is of a certain fixed size. The address information storage 314 also manages the data in units of block having a certain fixed size. Data of any block of the address information storage 314 is stored in each block of the partial information storage 310. The block size of the address information storage 314 is larger than the block size of the partial information storage unit 310. Accordingly, part of data of a block in the address information storage 314 is stored in a block of the partial information storage 310.

In the present embodiment, the cache processing unit 308 loads the data of a partial translation table into the partial information storage 310 by using the 4-way set associative method. Note that the refill may be done using a known method such as the direct mapped method or fully associative method.

It is possible that the partial information storage 310 according to the present embodiment stores a number of kinds of partial translation tables. In other words, a plurality of kinds of physical address ranges are stored as the partial translation table, from the address translation table. The cache processing unit 308 may constantly refill one or more kinds of partial translation tables corresponding to a predetermined logical address range. When data necessary for the address translation are contained in the partial translation table stored in the partial information storage 310, namely when there is a hit, the address translation unit 306 identifies the physical address by referring to the partial translation table thereof. In such a case, the address translation processing can be performed in a manner that the access to the partial information storage 310 only is made where the high-speed access is possible compared to the address information storage 314. That a partial translation table is refilled beforehand into the partial information storage 310 prior to the execution of address translation is called “look-ahead refill”.

On the other hand, when the address translation could not be executed with the partial translation table stored in the partial information storage 310 by the look-ahead refill, namely at the time of a miss hit, the cache processing unit 308 loads a new partial translation table into the partial information storage 310. Then the address translation unit 306 identifies the physical address by referring to this newly refilled partial translation table. Such a refill of the partial translation table which is executed when a miss hit has occurred is called “look-behind refill”.

In the present embodiment, even when a miss hit has occurred in a look-behind-refilled partial translation table, a new partial translation table is look-behind refilled while the partial translation table is being held in the partial information storage 310.

The partial translation table which has been look-ahead refilled may be in a state where the partial translation table is locked in the partial information storage 310. The partial translation table being locked will not be removed from the partial information storage 310. Accordingly, it will not be overwritten by the newly refilled partial translation table. On the other hand, the partial translation table which is not locked may possibly be removed from the partial information storage 310 as a result of the new refilling. With this method, the refill based on predictions by the look-ahead refill and the refill, based on received packets, by the look-behind refill can be effectively used in parallel.

In the conventional technique, where a miss hit occurs in a look-ahead refilled partial translation table, it is generally a case that the partial translation table is removed from the cache memory. Upon this, the partial translation table will be refilled in a look-behind manner. However, when the partial translation table which has been look-ahead refilled is once miss-hit, it is highly probable that there will be a hit in the next access.

According to the present embodiment, the merit gained by the prediction called the look-ahead refill is enjoyed and at the same time the look-behind refill at a miss hit is executed, so that the hit rate is likely to be raised as a whole.

For example, if the partial information storage 310 enables the storage of four kinds of partial translation tables, two of them may be look-ahead-refilled partial translation tables and the remaining two may be look-behind-refilled partial translation tables. The storage area of the look-ahead-refilled partial translation table will be called a look-ahead area whereas that of the look-behind-refilled partial translation table a look-behind area. If a look-ahead refill is executed anew, the partial translation table in the look-ahead area will be replaced. If a look-behind refill is executed anew, the partial translation table in the look-behind area will be replaced. A known method may be used as a method for selecting a partial translation table at the look-ahead refill. As an algorithm used to remove the partial translation table in the partial information storage 310 from the partial information storage 310 at the time of a refill, a known algorithm such as round-robin, least-recently-used (LRU) and random algorithm may be used.

FIG. 7 is a flowchart showing an access control process by the memory access control unit 300.

The command receiver 302 extracts IOIDs from the received packets (S10). Then the command receiver 302 calculates the first index value by adding a base value to a logical address designated by the packet. Based on the first index value, the address translation unit 306 translates a logical address into a physical address (S12). The processing of S12 will be described in detail later in conjunction with FIG. 11. The access decision unit 304 determines whether or not the IOID extracted from the packet agrees with the IOID on a page identified by the second translation table 182 (S14). If agreed (Y of S14), the access processing unit 312 will execute memory access according to the access attribute information (S16). If not (N of S14), the access processing unit 312 notifies to the command transmit auxiliary apparatus 200, which is a sender, about the error (S20). The notification of error may be conveyed to the OS as error message in the form of event notification. In this case, the memory access will be denied.

FIG. 8 is a flowchart showing in a detail an address translation processing in S12 of FIG. 7.

Firstly, the address translation unit 306 determines whether or not it is possible to convert the address by a partial translation table refilled in the partial information storage 310, namely whether the address is hit or not (S30). If it is hit (Y of S30), the address translation unit 306 will identify a physical address by referring to said partial translation table (S34). If the hit is missed (N of S30), the cache processing unit 308 will look-behind refill the partial translation table in question (S32). Then the physical address will be identified by the use of the partial translation table which has been look-behind refilled (S34).

According to the methods described in the present embodiments, the memory access requesting entities can be managed by the IOIDs in a unified manner. Accordingly, the memory access control unit 300 can prevent beforehand any unauthorized access. For a programmer who debugs the device driver, the debugging workload is reduced, too. Particularly suppose that a programs for controlling the I/O device 160 such as a device driver is to be prepared. Following a scheme of IOID does not adversely affect the other processing apparatuses, so that the burden on the development can be reduced.

Since the access permission/denial by IOIDs and the access condition by use of access attribute information can be managed in units of page, the memory access method can be meticulously controlled at the discretion of the memory access control unit 300. That is, the memory access control unit 300, which is a memory access executing entity, gains the control of the access requesting entities as a whole in a unified manner.

In recent years, many of commercial programs are prepared as a set of software modules provided from a number of programmers or third parties and therefore the memory access control requires all the more an accurate design. Accordingly, the methods described in the present embodiments are effective in meeting such a demand.

The logical address indicated in the packet data 162 according to the present embodiment may be a local logical address which is valid only in a memory access requesting entity such as the image processing unit 120. In this manner, in the memory access requesting side the access destination is specified by a logical address, not by a physical address, and therefore the memory is more likely to be protected. The command transmit auxiliary apparatus 200 may perform logical addition of predetermined bit data on a predetermined portion of the packet data. Then the memory access control unit 300 may perform logical addition of the bit data on the portion of the received packet data. In this case, this bit data plays the role of a key between the command transmit auxiliary apparatus 200 and the memory access control unit 300, so to speak. Hence, the memory protection can be effectively achieved thereby.

Furthermore, the first translation table 180 or the second translation table 182, provided as an address translation table, contains address attribute information which determines the access permission/denial by IOIDs and access method. As a result, each processing such as the address translation and access permission/denial determination can be executed efficiently. This is because if data necessary for the address translation are contained in the refilled partial translation table, a processing such as access permission/denial determination or specification of access condition can be done using its partial translation table.

Further, according to the present embodiments, the partial information storage 310 can execute the look-behind refill in a state where the partial translation table which has been look-ahead refilled is being held, so that the hit rate can be raised.

The present invention has been described based on the embodiments. The embodiments are merely exemplary, and it is understood by those skilled in the art that various modifications to the combination of each component and process thereof are possible and that such modifications are also within the scope of the present invention.

The memory access requesting entity described in CLAIM corresponds to the image processing unit 120 or I/O device 160, particularly the image processing unit 120 in the present embodiments. The access permission/denial determination table described in CLAIM corresponds to the IOID column 192, in particular, of the second translation table 182 in the present embodiments. The address information storage 314 in the present embodiments fulfills the function of an address translation table storage described in CLAIM. The partial information storage 310 in the present embodiments achieves mainly the function of the cache memory, described in CLAIM, into which the partial translation table is loaded by the cache processing unit. The access attribute table described in CLAIM corresponds to the access condition column 194, in particular, of the second translation table 182 in the present embodiments. The partial information storage 310 or the address information storage 314 in the present embodiments achieves the function of an access attribute table storage described in CLAIM.

It is also understood by those skilled in the art that the function to be achieved by each constituent element described in these Claims is realized by a single unit of each function block indicated in the present embodiments or in linkage with those.

While the preferred embodiments of the present invention have been described using specific terms, such description is for illustrative purposes only, and it is to be understood that changes and variations may be further made without departing from the spirit or scope of the appended claims. 

1. An I/O access control apparatus, comprising: a command receiver operable to receive, from an external access requesting entity, a command for controlling data in a memory space of a processor, together with address information used to specify an address to be accessed and ID information used to identify the access requesting entity; an access decision unit operable to determine whether access of the access requesting entity to an address specified by the address information is permitted or not, by referring to an access permission/denial determination table that associates an address in the memory space with ID information on an access requesting entity which is to be permitted to access a region specified by the address; and an access processing unit operable to execute access of the access requesting entity to the memory space if the access has been permitted by said access decision unit.
 2. An I/O access control apparatus according to claim 1, wherein the access permission/denial determination table is controlled by software such that the access requesting entity and said apparatus operate in a unified manner and under a predetermined rules.
 3. An I/O access control apparatus according to claim 1, wherein the access requesting entity is a direct memory access (DMA) requester that controls data in a memory space of a processor by a DMA transfer.
 4. An I/O access control apparatus according to claim 1, wherein said access decision unit is operable to determine whether access of the access requesting entity is permitted or not on a per page basis, which is a unit of basic management in the memory space.
 5. An I/O access control apparatus according to claim 4, wherein said access decision unit is capable of using a plurality of pages with different sizes.
 6. An I/O access control apparatus according to claim 4, wherein said access processing unit is capable of executing accesses to different pages in parallel in response to commands by a plurality of access requesting entities.
 7. An I/O access control apparatus according to claim 4, wherein pages to which different access requesting entities are accessible can be set in the access permission/denial determination table.
 8. An I/O access control apparatus according to claim 1, further comprising: an address translation table memory containing an address translation table to translate a logical address into a physical address, wherein the address information is indicative of the logical address, which is a virtual address converted from an address of the memory space into a predetermined format; and an address translation unit operable to translate the logical address specified by the address information into a physical address by referring to the address translation table, wherein said access processing unit is operable to execute the access of the access requesting entity based on the physical address identified by said address translation unit.
 9. An I/O access control apparatus according to claim 8, wherein the address translation table is set by software that controls the access requesting entity and said apparatus to operate in a unified manner and under predetermined rules.
 10. An I/O access control apparatus according to claim 8, wherein the address translation table includes table data, corresponding to the access permission/denial determination table, and the address translation table is formed as a data table that associates the logical address and physical address with ID information on an access requesting entity which is to be permitted to access a region specified by the address.
 11. An I/O access control apparatus according to claim 10, wherein the address translation table is set so that a plurality of access requesting entities are capable of accessing an identical physical address region through pages of different logical addresses, respectively.
 12. An I/O access control apparatus according to claim 8, further comprising a cache processing unit which initializes the address translation table by loading a partial translation table, corresponding to a predetermined logical address range in the address translation table, into a cache memory from said address translation table memory, prior to address translation by said address translation unit, wherein when data necessary for converting a logical address specified by the address information into a physical address is contained in the partial translation table, said address translation unit performs address translation by referring to the partial translation table, and wherein when the data necessary for converting a logical address specified by the address information into a physical address is not contained in the partial translation table, said cache processing unit loads a new partial translation table into the cache memory from said address translation table memory.
 13. An I/O access control apparatus according to claim 12, wherein when the data necessary for converting a logical address specified by the address information into a physical address is not contained in the partial translation table prior to execution of the address translation, said cache processing unit loads a new partial translation table into the cache memory in a state where the partial translation table is being held in the cache memory.
 14. An I/O access control apparatus according to claim 1, further comprising an access attribute table memory which contains an access attribute table that associates an address in the memory space with access attribute information defining an access condition for a region specified by said address, wherein said access processing unit is operable to execute an access specified by the received command in accordance with the access condition specified by the access attribute table, on the condition that access of the access requesting entity is permitted by said access decision unit.
 15. An I/O access control apparatus according to claim 1, wherein the access attribute table is set by software that controls the access requesting entity and said apparatus to operate in a unified manner and under predetermined rules.
 16. An I/O access control apparatus according to claim 14, wherein whether access sequence is to be executed in order or not is specified in the access attribute table as an access condition, and wherein said access processing unit is operable to access specified by the received command according as whether access sequence is to be executed in order or not is specified by the access attribute table.
 17. An I/O access control apparatus according to claim 8, wherein said address translation table memory stores an index value generated by performing a logic operation of a predetermined base value on a predetermined part of the logical address specified in the address information, and the address translation table as a data table associating a physical address with the index value, and wherein said address translation unit calculates the index value from the logical address specified by the received address information, and identifies a physical address by referring to the address translation table according to the index value thereof.
 18. An I/O access control apparatus according to claim 17, wherein the predetermined part of data in the address information is a segment address set by each access requesting entity.
 19. A command transmit auxiliary apparatus, comprising: an ID adding unit operable to assign ID information to identify a predetermined access requesting entity, to a command for controlling data, in a memory space of a processor, sent from the access requesting entity together with address information used to specify an address to be accessed in the memory space of a processor; and a command transmitter operable to transmit the command to which the ID information has been assigned, to an external device, wherein the external device determines whether access of the access requesting entity to the address specified by the address information is to be permitted or not, by referring to an access permission/denial determination table that associates an address of the memory space and ID information on an access requesting entity whose access to a region specified by said address of the memory space is permitted.
 20. A command transmit auxiliary apparatus according to claim 19, wherein said ID adding unit produces the ID information in accordance with a rule such that a unique ID for the access requesting entity is converted by use of a predetermined ID generation table.
 21. A command transmit auxiliary apparatus according to claim 20, wherein a conversion rule of the ID generation table is capable of being set by software that controls the access requesting entity and the external device to operate in a unified manner and under predetermined rules.
 22. A command transmit auxiliary apparatus according to claim 19, wherein the ID information is assigned, for each access requesting entity, by software that controls the access requesting entity and the external device to operate in a unified manner and under predetermined rules.
 23. A command transmit auxiliary apparatus according to claim 19, further comprising a segment address generator operable to generate a segment address in accordance with a rule such that a unique ID for the access requesting entity is converted by use of a predetermined segment generation table, wherein said command transmitter transmits the command in accordance with a rule such that the segment address is contained in part of the address information.
 24. A command transmit auxiliary apparatus according to claim 23, wherein the segment generation table is capable of being set by software that controls the access requesting entity to operate in a unified manner and under predetermined rules.
 25. A method for controlling I/O access, comprising: receiving, from an external access requesting entity, a command for controlling data in a memory space of a processor, together with address information used to specify an address to be accessed and ID information used to identify the access requesting entity; determining whether access of the access requesting entity to an address specified by the address information is permitted or not, by referring to an access permission/denial determination table that associates an address in the memory space with ID information on an access requesting entity which is to be permitted to access a region specified by the address; and executing access of the access requesting entity to the memory space, on the condition that the access has been permitted by said determining.
 26. A method for controlling I/O access according to claim 25, wherein said determining is such that whether access of the access requesting entity is permitted or not is determined on a per page basis, which is a unit of basic management in the memory space.
 27. A method for controlling I/O access according to claim 26, wherein a different size of page is capable of being used per page.
 28. A method for controlling I/O access according to claim 26, further comprising translating a logical address specified by the address information into a physical address by referring to an address translation table to translate the logical address into the physical address wherein the address information is information indicative of the logical address, which is a virtual address converted from an address of the memory space into a predetermined format; wherein the access of the access requesting entity is executed based on the physical address identified by the address translation table.
 29. A method for controlling I/O access according to claim 28, wherein the address translation table includes table data corresponding to the access permission/denial determination table and is formed as a data table that associates the logical address and physical address with ID information on an access requesting entity which is to be permitted to access a region specified by the address.
 30. A method for controlling I/O access according to claim 29, wherein the address translation table is set so that a plurality of access requesting entities are capable of accessing an identical physical address region through pages of different logical addresses, respectively.
 31. A method for controlling I/O access according to claim 28, further comprising initializing a partial translation table, corresponding to a predetermined logical address range in the address translation table, into a cache memory, prior to the execution of address translation, wherein when data necessary for converting a logical address specified by the address information into a physical address is contained in the loaded partial translation table, the address translation is performed by referring to the partial translation table, and wherein when the data necessary for converting a logical address specified by the address information into a physical address is not contained in the loaded partial translation table, a new partial translation table is loaded into the cache memory.
 32. A method for controlling I/O access according to claim 31, wherein when the data necessary for converting a logical address specified by the address information into a physical address is not contained in the partial translation table prior to execution of the address translation, a new partial translation table is loaded into the cache memory in a state where the partial translation table is being held in the cache memory.
 33. A method for controlling I/O access according to claim 25, further comprising executing an access specified by a received command, according to an appropriate access condition, by referring to an access attribute table that associates an address in the memory space with access attribute information defining the access condition for a region specified by said address.
 34. A method for controlling I/O access according to claim 33, wherein whether access sequence is to be executed in order or not is specified in the access attribute table as an access condition, and wherein access specified by the received command is executed according to an instruction of whether access sequence is to be executed in order or not, specified by the access attribute table.
 35. A method for controlling I/O access according to claim 28, wherein the address translation table is a data table that associates an index value generated by performing a logic operation of a predetermined base value on a predetermined part of data of the logical address specified in the address information, with a physical address, and wherein the index value is calculated from the logical address specified by the received address information, and a physical address is identified by referring to the address translation table according to the index value thereof.
 36. A method for controlling I/O access according to claim 35, wherein the predetermined part of data in the address information is a segment address set by each access requesting entity.
 37. A command transmit auxiliary method, comprising: assigning ID information to identify a predetermined access requesting entity, to a command for controlling data, in a memory space of a processor, sent from the access requesting entity together with address information used to specify an address to be accessed in the memory space of a processor; and transmitting the command to which the ID information has been assigned, to an external device, wherein the external device determines whether access of the access requesting entity to the address specified by the address information is to be permitted or not, by referring to an access permission/denial determination table that associates an address of the memory space and ID information on an access requesting entity whose access to a region specified by said address of the memory space is permitted.
 38. A computer program product for controlling I/O access, the product comprising: a receiving code module for receiving, from an external access requesting entity, a command for controlling data in a memory space of a processor, together with address information used to specify an address to be accessed and ID information used to identify the access requesting entity; and a determining code module for determining whether access of the access requesting entity to an address specified by the address information is permitted or not, by referring to an access permission/denial determination table that associates an address in the memory space with ID information on an access requesting entity which is to be permitted to access a region specified by the address.
 39. A computer program product for assisting the transmission of commands, the product including: a assigning code module for assigning ID information to identify a predetermined access requesting entity, to a command for controlling data, in a memory space of a processor, sent from the access requesting entity together with address information used to specify an address to be accessed in the memory space of a processor; and a transmitting code module for transmitting the command to which the ID information has been assigned, to an external device, wherein the external device determines whether access of the access requesting entity to the address specified by the address information is to be permitted or not, by referring to an access permission/denial determination table that associates an address of the memory space and ID information on an access requesting entity whose access to a region specified by said address of the memory space is permitted.
 40. A recording medium which stores a computer product for controlling I/O access, the product comprising: a receiving code module for receiving, from an external access requesting entity, a command for controlling data in a memory space of a processor, together with address information used to specify an address to be accessed and ID information used to identify the access requesting entity; and a determining code module for determining whether access of the access requesting entity to an address specified by the address information is permitted or not, by referring to an access permission/denial determination table that associates an address in the memory space with ID information on an access requesting entity which is to be permitted to access a region specified by the address.
 41. A recording medium which stores a computer product for assisting the transmission of commands, the product including: a assigning code module for assigning ID information to identify a predetermined access requesting entity, to a command for controlling data, in a memory space of a processor, sent from the access requesting entity together with address information used to specify an address to be accessed in the memory space of a processor; and a transmitting code module for transmitting the command to which the ID information has been assigned, to an external device, wherein the external device determines whether access of the access requesting entity to the address specified by the address information is to be permitted or not, by referring to an access permission/denial determination table that associates an address of the memory space and ID information on an access requesting entity whose access to a region specified by said address of the memory space is permitted. 